package org.lemon.cla.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.lemon.cla.pojo.User;
import org.lemon.cla.dto.request.UserSearchRequest; // 导入查询请求DTO
import org.lemon.cla.dto.response.UserResponse; // 导入用户响应DTO

public interface IUserService extends IService<User> {


    /**
     * 根据多个条件模糊查询用户，并返回不含密码的 UserResponse 列表。
     *
     * @param page 分页对象 (UserResponse 泛型)
     * @param request 查询请求DTO，包含模糊查询的各种条件
     * @return 分页用户响应对象列表
     */
    IPage<UserResponse> searchUsersByConditions(Page<UserResponse> page, UserSearchRequest request);

    /**
     * 逻辑删除或恢复用户。
     * @param userId 用户ID
     * @param deleteStatus true 表示逻辑删除 (is_deleted=1)，false 表示恢复 (is_deleted=0)
     * @return true 如果操作成功，false 否则
     */
    boolean setLogicalDeleteStatus(Integer userId, boolean deleteStatus);
    /**
     * 根据用户名获取用户，默认只查询未逻辑删除的用户。
     * @param username 用户名
     * @return 用户实体
     */
    User getUserByUsername(String username);
}